package middlewareWeb;

import java.io.*;


/**
 * Classe che implementa il descrittore del singolo Task
 * @author jhonny
 * @version 1.0
 */
public class TaskDescriptor implements Serializable {
    private int ID;
    private TaskTYPE type;
    private String command;
    private String link;

    /**
     * Metodo costruttore della classe TaskDescriptor
     * @param ID id del task
     * @param type tipo di task
     * @param command tipo di comando
     * @param link link della risorsa
     */
    public TaskDescriptor(int ID, TaskTYPE type,String command,String link){
        this.ID = ID;
        this.command = command;
        this.link = link;
        this.type = type;
    }
    /**
     * Metodo costruttore del descrittore del Task
     */
    public TaskDescriptor()
    {}

    /**
     * Metodo che consente di ottenere l'ID del Task
     * @return intero rappresentante l'id del task
     */
    public int getID()
    {
        return ID;
    }

    /**
     * Metodo che consente di settare l'ID del Task
     * @param val valore intero dell'id
     */
    public void setID(int val)
    {
        ID = val;
    }

    /**
     * Metodo che restituisce il tipo di Task
     * @return tipo di task
     */
    public TaskTYPE getType()
    {
        return type;
    }

    /**
     * Metodo che imposta il tipo di Task
     * @param val TaskTYPE
     */
    public void setType(TaskTYPE val)
    {
        type = val;
    }

    /**
     * Metodo che restituisce il link
     * @return link
     */
    public String getLink()
    {
        return link;
    }

    /**
     * Metodo che imposta il link
     * @param val stringa contentente il link
     */
    public void setLink(String val)
    {
        link = val;
    }

    /**
     * Metodo che restituisce il command
     * @return stringa contenente il comando da eseguire
     */
    public String getCommand()
    {
        return command;
    }

    /**
     * Metodo che imposta il command
     * @param val string con il comando da eseguire
     */
    public void setCommand(String val)
    {
        command = val;
    }
    /**
     * Metodo restituisce sottoforma di stringa  con tag XML l'oggetto TaskDescriptor
     * @return stringa con tag XML
     */
    public String toXML()
    {
        String s="<Task id="+this.getID()+" tipo="+this.getType()+" link="+this.getLink()+" command="+this.getCommand()+">";
        return s;
    }

     /**
     * Metodo restituisce sottoforma di stringa l'oggetto TaskDescriptor
     * @return stringa di descrizione
     */
    @Override
    public String toString(){
        return "ID: " + ID + "TaskTYPE: " + this.getType()+"Command: " + this.getCommand() + "Link: " + this.getLink();
    }
}
